Development of the software is generally subjected to rigorous software testing. Software testing is a major component in a software development cycle. Some of the techniques used for software testing include executing a program or application with the intent of finding software bugs, errors, or other defects. This testing can provide information about software quality. Ideally, software testing should provide an objective, independent view of the software to allow the stakeholders to appreciate and understand the risks of software implementation. In reality, however, software testing faces many challenges. One challenge that occurs during the software development cycle relates to the creation of an abstracted view that can provide stakeholders with the health of the software-under-test or a feature of the software-under-test in a consistent and uniform fashion. Generally, stakeholders are provided with a plethora of metrics that can be complicated to comprehend or understand.
Many of the presently-available tools and methods of software testing can be viewed as being focused more on information gathering than an objective analysis or logical correlation of the gathered information. For example, there are a plurality of models and tools available on code coverage/discovery, resolution rates, code density, defect density, bugs per line of code, cohesion, comment density, connascent software components, coupling, cyclomatic complexity, design structure quality index (DSQI), instruction path length, maintainability index, number of classes and interfaces, number of lines of code, number of lines of customer requirements, program execution time, program load time, program size, etc. Many of these models and tools are developed and endorsed by different companies/authors and there is little standardization between these models and tools. This lack of coherency can prevent stakeholders from obtaining a complete view of the health of the software-under-test or the health of a feature of the software-under-test.